<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Title</title>
</head>
<body>
<script>
    // Promise是js中进行异步编程的新的解决方案 旧的是纯回调形式
    // 从语法来说 promise是一个构造函数
    // 从功能上来说 promise对象用来封装一个异步操作并可以取其结果

    // 1.创建一个新的promise对象
    const p = new Promise((resolve, reject) => { // 执行器函数
        console.log('执行excutor')
        // 2.执行异步任务
        setTimeout(() => {
            const time = Date.now() // 如果当前时间是偶数就代表成功 否则代表失败
            // 3.1如果成功 调用resolve(value)
            if(time%2 == 0) {
                resolve('成功的数据，time='+time)
            } else {
                // 3.2如果失败了 调用reject(reason)
                reject('失败的数据，time='+time)
            }

        },1000)
    })
    console.log('new promise之后')

    setTimeout(()=>{
        p.then(
            // 接受得到成功的value数据 onResolved
            value => {
                console.log('成功的回调', value)
            },
            // 接收得到失败的reason数据 onRejected
            reason => {
                console.log('失败的回调', reason)
            }
        )
    },2000)

</script>
</body>
</html>
